// import React from 'react';
// import ReactDOM from 'react-dom';
import Myreact from './reactEvent'
// import './index.css';
// import App from './App';
// import reportWebVitals from './reportWebVitals';
// import Login from './pages/login'
// import './service-work/app'

// ReactDOM.render(
//   <React.StrictMode>
//     <Login />
//   </React.StrictMode>,
//   document.getElementById('root')
// );
//
// reportWebVitals();

// 数据格式化处理 最终返回一个对象 提供了数据
const Element = Myreact.createElement(
    'div',
    {
        title:'标题'
    },
    '我的div',
    Myreact.createElement('a',null,'我是a标签')
)
console.log(Element);

Myreact.render(
    Element,
    document.getElementById('root')
);

// 浏览器的刷新评率 60hz  也就是1帧 大概花费16.66毫秒ms
/**
 *那他在这段时间会干什么事情呢，有一些事件的处理 有一些js的执行，以及绘制和布局 等等可能他处理完还有一些空闲时间
 * 然后就是浏览器任务，众所周知 我们js是单线程运行的 所以 所有任务都是一个个 执行的 那么如果某个任务的耗时特备的
 * 长 ，超过了我们浏览器一帧的时间 那就会感知到卡顿，更甚者出现卡死 ，那前面也提到，react是适合构建大型web应用的首先，那
 * 是不是也意味着，节点数量会非常的庞大，react会一直霸占这浏览器的资源 这样的话如果采用同步的方式 那是不是可能会导致卡死
 * 的现象 这样对用户的体验是非常不友好的。所以react实现了一种并发的模式 并发的 fiber 在并发中扮演什么样的角色
 *
 * 浏览器开始的执行的时候， react 会发送一个调度请求， 让浏览器空闲的时候 通知自己 执行一下 自己的任务
 * react 任务执行 是以任务单元的形式执行， 是否存在下一个任务单元 ，如果没有任务单元执行，这会会把控制权交还给 浏览器
 * 如果存在任务单元 就执行我的任务  当任务单元执行完毕后 ，又会有个判断 ，判断是否还有剩余时间 ，如果没有空余时间 同样吧
 * 控制权交给浏览器， 如果 有空余时间 接着循环 上一步（是否存在下一个任务单元 ，如果没有任务单元执行） 这样的话 他就比
 * 浏览器同步执行 丝滑顺畅的多
 * 函数编程有个思想 叫 代数效应  （写给那些搞不懂代数效应的我们）https://zhuanlan.zhihu.com/p/76158581
 * schedule 调度 优先级队列 他用的数据结构 小递归， react渲染原理   render深度优先遍历的方式
 * lane 模型
 * state => view 的过程
 *
 *
 *
 */